<?php
class Stratosphere{
	function __construct($options=null) {}
	function __destruct() {}	/*
	if($ platform == 'BAE'){
		require_once(‘Stratosphere.Memcache.BAE.class.php');
		return new StratosphereMemcache($option);
	}
	*/

	public function getPlatform($platform=null){
		if(is_null($platform) ){
			$s_platform=$platform;
			//自动检查
			$s_host=$_SERVER['HTTP_HOST'];//
			$s_domainname=$_SERVER['SERVER_NAME'];
			$a_dom=explode(".",$s_host);
			$s_dom=array_pop($a_dom);
			$s_dom=$s_dom.".".array_pop($a_dom);
			switch($s_dom){
			case "com.duapp":
				$s_platform="BAE";
				break;
			case "com.aliapp":
				$s_platform="ACE";
				break;
			case "com.sinaapp":
				$s_platform="SAE";
				break;
			default:
				$s_platform="default";
			}
			return $s_platform;
		}elseif( in_array($platform, array("BAE", "ACE", "SAE","default") )){
			return $platform;
		}else{
			return 'default';
		}
	}
	
	public function getSession($platform,$option){
		//require_once("Stratosphere.Session.".$platform.".class.php");
		//return new StratosphereSession($option);
		//参考各平台规范可知，只要按ace.aliyun的要求，只是用某几个函数，即可避免不兼容的问题。因此，在Stratosphere.Session.default.class.php中实现。
		//函数都改作了同名方法，用法请参考php手册；
		require_once("Stratosphere.Session.default.class.php");
		return new StratosphereSession($option);
	}
	public function getMemcache($platform,$option){
		//参考各平台规范可知，sae的功能是最小集合。因此只支持set、get方法。
		if (in_array($platform, array("BAE", "ACE", "SAE"))) {
			require_once("Stratosphere.Memcache.".$platform.".class.php");
		}else{
			require_once("Stratosphere.Memcache.default.class.php");
		}
		return new StratosphereMemcache($option);
	}
	public function getMySql($platform,$option){
		//只提供返回 mysql的$db_link 或mysqli的方法，注意没有错误测试，需要使用者自己处理mysql_errno()和Exception。
		if (in_array($platform, array("BAE", "SAE"))) {
			require_once("Stratosphere.MySql.".$platform.".class.php");
		}else{
			require_once("Stratosphere.MySql.default.class.php");
		}
		return new StratosphereMySql($option);
	}
	public function getFetchURL($platform,$option){
		//ACE使用标准的curl；SAE目前已经完全兼容cURL模块，推荐用户使用cURL*函数；百度云平台的Fetchurl服务完全兼容cUrl
		//因此此版本模块实际没有内容
		if (in_array($platform, array("BAE", "SAE"))) {
			require_once("Stratosphere.FetchURL.".$platform.".class.php");
		}else{
			require_once("Stratosphere.FetchURL.default.class.php");
		}
		return new StratosphereFetchURL($option);
	}
	public function getImageLib($platform,$option){
		//BAE、ACE使用标准的gd；SAE目前已经支持了GD（利用RPC实现），用户可以使用传统的GD函数处理图片，兼容用户以往的使用习惯，使用户的学习成本降为零。所以我们建议用户使用gd*函数进行图像操作，但我们仍然保留了Image服务。
		//因此此版本模块实际没有内容
		if (in_array($platform, array("SAE"))) {
			require_once("Stratosphere.ImageLib.".$platform.".class.php");
		}else{
			require_once("Stratosphere.ImageLib.default.class.php");
		}
		return new StratosphereImageLib($option);
	}
	public function getServerLog($platform,$option){
		//按BAE进行包装，分为5种类型的输出。注意：由于ACE完全不支持日志,因此用CeFile代替，所以需要自行解决查看日志的问题。
		if (in_array($platform, array("BAE", "SAE", "ACE"))) {
			require_once("Stratosphere.ServerLog.".$platform.".class.php");
		}else{
			require_once("Stratosphere.ServerLog.default.class.php");
		}
		return new StratosphereServerLog($option);
	}
	public function getCron($platform,$option){
		require_once("Stratosphere.Cron.".$platform.".class.php");
		return new StratosphereCron($option);
	}
	public function getTaskQueue($platform,$option){
		require_once("Stratosphere.TaskQueue.".$platform.".class.php");
		return new StratosphereTaskQueue($option);
	}
	public function getStorage($platform,$option){
		require_once("Stratosphere.Storage.".$platform.".class.php");
		return new StratosphereStorage($option);
	}
	public function getKVDB($platform,$option){
		require_once("Stratosphere.KVDB.".$platform.".class.php");
		return new StratosphereKVDB($option);
	}
}
?>



